/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.perutaxi.segu;

import com.perutaxi.entidades.eRol;
import com.perutaxi.entidades.eUsuario;
import com.perutaxi.negocio.nRol;
import com.perutaxi.negocio.nUsuario;
import com.perutaxi.util.GenericMBean;
import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;

/**
 *
 * @author PeruTaxi
 */
@ManagedBean
@SessionScoped
public class UsuarioMBean extends GenericMBean implements Serializable {

    private eUsuario usrFiltro;
    private eUsuario usr;
    private List<eUsuario> lista;
    private List<eRol> listaRoles;
    private int accion; //1:nuevo, 2:editar, 3:ver
    private String titulo; //titulo del panel
    private final String urlLista = "/pages/segu/usuario/listaUsuario.xhtml";
    private final String url = "/pages/segu/usuario/usuario.xhtml";

    public UsuarioMBean() {
    }

    public String iniciar() {
        usrFiltro = new eUsuario();
        usrFiltro.setUsuario("");
        usrFiltro.setRol(new eRol());
        usrFiltro.setEstado(Boolean.TRUE);
        lista = null;

        return this.urlLista;
    }

    public void buscar(ActionEvent ae) {
        try {
            usrFiltro.setRol(nRol.obtenerPorId(usrFiltro.getIdRol()));
            this.lista = nUsuario.obtenerUsuario(this.usrFiltro);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public String nuevo() {
        this.accion = 1;
        this.titulo = "NUEVO(A) USUARIO";
        this.usr = nUsuario.inicializar();

        return this.url;
    }

    public String editar() {
        this.accion = 2;
        this.titulo = "ACTUALIZAR USUARIO";

        return this.url;
    }

    public String ver() {
        this.accion = 3;
        this.titulo = "VER USUARIO";

        return this.url;
    }

    public String guardar() throws Exception {
        usr.setRol(nRol.obtenerPorId(usr.getIdRol()));
        if (this.accion == 1) {
            Long id = Long.valueOf(nUsuario.obtenerTodos().size() + 1);
            usr.setId(id);
            if (nUsuario.guardar(usr)) {
                showMessage("SE HA GUARDADO CORRECTAMENTE");
                return this.editar();
            } else {
                showError("ERROR AL MOMENTO DE GUARDAR");
                return null;
            }
        } else if (this.accion == 2) {
            if (nUsuario.actualizar(usr)) {
                showMessage("SE HA GUARDADO CORRECTAMENTE");
                return this.editar();
            } else {
                showError("ERROR AL MOMENTO DE GUARDAR");
                return null;
            }
        }
        
        return "";
    }

    public String retroceder() {
        buscar(null);
        return this.urlLista;
    }

    public eUsuario getUsrFiltro() {
        return usrFiltro;
    }

    public void setUsrFiltro(eUsuario usrFiltro) {
        this.usrFiltro = usrFiltro;
    }

    public eUsuario getUsr() {
        return usr;
    }

    public void setUsr(eUsuario usr) {
        this.usr = usr;
    }

    public List<eUsuario> getLista() {
        return lista;
    }

    public void setLista(List<eUsuario> lista) {
        this.lista = lista;
    }

    public List<eRol> getListaRoles() throws Exception {
        return nRol.obtenerActivos();
    }

    public void setListaRoles(List<eRol> listaRoles) {
        this.listaRoles = listaRoles;
    }

    public int getAccion() {
        return accion;
    }

    public void setAccion(int accion) {
        this.accion = accion;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }
}
